查看原文
其他

轻盈高效的异步访问库grequests库

2018-01-21

作者 大邓


今天发现一个grequests库,是将gevent库与requests库结合起来的请求库。可以实现异步访问,我觉得挺方便的,就拿来分享一下。

grequests库重点方法就是下面这两行。

import grequests

#请求队列,还未发出请求
rs = (grequests.get(u) for u in urls)

#批量发出请求,得到响应的列表resps
resps = grequests.map(rs)

对异步或者gevent库不太了解的可以看看我之前的这两篇文章。这两篇文章加起来阅读时间十多分钟,图文并茂,很好理解的。

使用gevent实现高效异步请求

gevent:异步理论与实战


今天我就直接上代码和效果图。

import grequests
from pyquery import PyQuery as pq words = ['good', 'bad', 'cool',         'hot', 'nice', 'better',         'head', 'up', 'down',         'right', 'left', 'east']

#构建urls
urls = ["http://dict.youdao.com/w/eng/{}/".format(w) for w in words]

def word_info(resp):    """    解析出单词信息    resp 为requests对网址请求后得到的响应    返回字典信息    """    doc = pq(resp.text)    pros = ''    for pro in doc.items('.baav .pronounce'):        pros += pro.text()    description = ''    for li in doc.items('#phrsListTab .trans-container ul li'):        description += li.text()    return {'音标': pros, '注释': description}

#请求队列,还未发出请求
rs = (grequests.get(u) for u in urls)

#批量发出请求,得到响应的列表resps
resps = grequests.map(rs)

for resp in resps:    #解析出单词的信息。    print(word_info(resp))

从上图可见greqeusts库实现了requests不能实现的异步请求,不过grequests缺点是不能像requests那样高度灵活的构建headers,proxy等参数。如果爬的网站防护很Low的话,我们不需要高灵活的requests,就可以放心的使用gerequests提高效率。

数据采集

【视频讲解】Scrapy递归抓取简书用户信息

【实战视频】使用scrapy写爬虫-爬知乎live

如何将html中的表格数据保存下来

美团商家信息采集神器

gevent:异步理论与实战

selenium驱动器配置详解

爬虫神器PyQuery的使用方法

简易SQLite3数据库学习

当爬虫遭遇验证码,怎么办  

js2xml:将javascript字符串转换为xml


文本处理分析

gensim:用Word2Vec进行文本分析

RAKE:快速自动抽取关键词算法

对于中文,nltk能做哪些事情

基于共现发现人物关系的python实现

用pyecharts制作词云图

留在网上的每个字,都在泄露你的身份


图片数据处理

OpenCV:快速入门图片人脸识别

好玩的OpenCV:图片操作的基本知识(1)

好玩的OpenCV:图像操作的基本知识(2)

OpenCV:计算图片有多色


其他

Python中处理日期时间库的使用方法

三分钟掌握文件格式识别

为什么你要为2019,而不是2018做计划?

2017年度15个最好的数据科学领域Python库

迅雷不给力,我DIY了个下载器

计算运行时间-装饰器实现

花十分钟,给爱机安装个MongoDB

使用Python登录QQ邮箱发送QQ邮件

WTF Python: 开启你的懵逼模式

8行代码实现微信聊天机器人

优雅简洁的列表推导式

Get小技巧等分列表

如何对数据进行各种排序?

数据结构:队列与堆栈 

else除了跟if很搭,你还知道其他的关键词吗?



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存